<!doctype html>
<html lang="en" class="page-type-section">
<head prefix="og: http://ogp.me/ns#">
<meta charset="utf-8">
<title>序列内建函数 - FreeMarker 手册</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="format-detection" content="telephone=no">
<meta property="og:site_name" content="FreeMarker 手册">
<meta property="og:title" content="序列内建函数">
<meta property="og:locale" content="en_US">
<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_sequence.html">
<link rel="canoical" href="http://freemarker.org/docs/ref_builtins_sequence.html">
<link rel="icon" href="favicon.png" type="image/png">
<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css">
</head>
<body itemscope itemtype="https://schema.org/Code">
    <meta itemprop="url" content="http://freemarker.org/docs/">
    <meta itemprop="name" content="FreeMarker 手册">

  <!--[if lte IE 9]>
  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="http://freemarker.org/docs/api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://sourceforge.net/p/freemarker/bugs/new/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="toc.html" class="navigation-header">Manual</a><div class="navigation-header"></div></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="toc.html"><span itemprop="name">FreeMarker 手册</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">模板语言参考 </span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">内建函数参考</span></a></li><li class="step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_sequence.html"><span itemprop="name">序列内建函数</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
      <div class="content-wrapper">
  <div id="table-of-contents-wrapper" class="col-left">
      <script>var breadcrumb = ["FreeMarker 手册","模板语言参考 ","内建函数参考","序列内建函数"];</script>
      <script src="toc.js"></script>
      <script src="docgen-resources/main.min.js"></script>
  </div>
<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_boolean.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_hash.html"><span>Next</span></a></div><div class="title-wrapper">
<h1 class="content-header header-section1" id="ref_builtins_sequence" itemprop="headline">序列内建函数</h1>
</div></div><div class="page-menu">
<div class="page-menu-title">Page Contents</div>
<ul><li><a class="page-menu-link" href="#ref_builtin_chunk" data-menu-target="ref_builtin_chunk">chunk</a></li><li><a class="page-menu-link" href="#ref_builtin_first" data-menu-target="ref_builtin_first">first</a></li><li><a class="page-menu-link" href="#ref_builtin_join" data-menu-target="ref_builtin_join">join</a></li><li><a class="page-menu-link" href="#ref_builtin_last" data-menu-target="ref_builtin_last">last</a></li><li><a class="page-menu-link" href="#ref_builtin_reverse" data-menu-target="ref_builtin_reverse">reverse</a></li><li><a class="page-menu-link" href="#ref_builtin_seq_contains" data-menu-target="ref_builtin_seq_contains">seq_contains</a></li><li><a class="page-menu-link" href="#ref_builtin_seq_index_of" data-menu-target="ref_builtin_seq_index_of">seq_index_of</a></li><li><a class="page-menu-link" href="#ref_builtin_seq_last_index_of" data-menu-target="ref_builtin_seq_last_index_of">seq_last_index_of</a></li><li><a class="page-menu-link" href="#ref_builtin_size" data-menu-target="ref_builtin_size">size</a></li><li><a class="page-menu-link" href="#ref_builtin_sort" data-menu-target="ref_builtin_sort">sort</a></li><li><a class="page-menu-link" href="#ref_builtin_sort_by" data-menu-target="ref_builtin_sort_by">sort_by</a></li></ul> </div>
          



<h2 class="content-header header-section2" id="ref_builtin_chunk">chunk</h2>


          

          

          

            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p>该内建函数从 FreeMarker 2.3.3 版本开始存在。</p>
            </div>


          <p>该内建函数将序列分隔为多个序列，长度为第一个参数给定的值
		  (比如 <code class="inline-code">mySeq?chunk(3)</code>)。结果是包含这些序列的一个序列。
		  最后一个序列可能比给定的长度要小，除非第二个参数也给定了
		  (比如 比如 <code class="inline-code">mySeq?chunk(3, &#39;-&#39;)</code>)，
		  这就是用来填充最后一个序列，以达到给定的长度。例如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign seq = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;]&gt;

&lt;#list seq?chunk(4) as row&gt;
  &lt;#list row as cell&gt;${cell} &lt;/#list&gt;
&lt;/#list&gt;

&lt;#list seq?chunk(4, &#39;-&#39;) as row&gt;
  &lt;#list row as cell&gt;${cell} &lt;/#list&gt;
&lt;/#list&gt;</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">
  a b c d 
  e f g h 
  i j 

  a b c d 
  e f g h 
  i j - - 
 </pre></div>

          <p>该内建函数通常在输出的序列中使用表格/柱状的格式。
		  当被用于HTML表格时，第二个参数通常是<code class="inline-code">&quot;\xA0&quot;</code>
		  (也就是不换行的空格代码，也就是我们所知的&quot;nbsp&quot;)，
		  所以空TD的边界就不会不丢失。</p>

          <p>第一个参数必须是一个数字，而且至少是1。如果这个数字不是整数，
		  那么它会被静默地去掉小数部分(也就是说3.1和3.9都会被规整为3)。
		  第二个参数可以是任意类型的值。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_first">first</h2>


          

          <p>序列的第一个子变量。如果序列为空，那么模板处理将会中止。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_join">join</h2>


          

          <p>使用给定的分隔符来连接序列中的项为一个独立的字符串，例如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign colors = [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]&gt;
${colors?join(&quot;, &quot;)}</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">red, green, blue</pre></div>

          <p>序列中不是字符串的项会被转换为字符串，使用 
		  <code class="inline-code">${<em class="code-color">...</em>}</code> 相同的转换规则
		  (当然这里不会应用自动转义)。</p>

          <p><code class="inline-code">?join(<em class="code-color">...</em>)</code> 
		  最多可以有3个参数：</p>

          <div class="orderedlist"><ol type="1">
            <li>
              <p>分隔符，是必须的:插入到每一项中间的字符串</p>
            </li>

            <li>
              <p>空值，默认是 <code class="inline-code">&quot;&quot;</code> (空字符串)：
			  如果序列为空，使用该值。</p>
            </li>

            <li>
              <p>列表结尾，默认是 <code class="inline-code">&quot;&quot;</code> (空字符串):
			  如果列表序列不为空，该值在最后一个值后面输出。</p>
            </li>
          </ol></div>

          <p>所以 (这里 <code class="inline-code">[]</code> 意味着空序列)：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">${colors?join(&quot;, &quot;, &quot;-&quot;)}
${[]?join(&quot;, &quot;, &quot;-&quot;)}

${colors?join(&quot;, &quot;, &quot;-&quot;, &quot;.&quot;)}
${[]?join(&quot;, &quot;, &quot;-&quot;, &quot;.&quot;)}</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">red, green, blue
-

red, green, blue.
-</pre></div>

          <p class="programmers-note">来自Java的序列可能会包含
          <code class="inline-code">null</code> 值。那些值会被该内建函数忽略，
		  就像它们从列表中被移除了。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_last">last</h2>


          

          <p>序列的最后一个子变量。如果序列为空，那么模板处理将会中止。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_reverse">reverse</h2>


          

          <p>序列的反序形式。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_seq_contains">seq_contains</h2>


          

            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p>该内建函数从 FreeMarker 2.3.1 版本开始可用。
			而在 2.3 版本中不存在。</p>
            </div>


            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p><code class="inline-code">seq_</code> 前缀在该内建函数名字中是需要的，
			用来和 <a href="ref_builtins_string.html#ref_builtin_contains"><code>contains</code>
            内建函数</a> 区分开。contains 用来在字符串中查找子串
			(因为变量可以同时当作字符串和序列)。</p>
            </div>


          <p>辨别序列中是否包含指定值。它包含一个参数，就是来查找的值。比如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = [&quot;red&quot;, 16, &quot;blue&quot;, &quot;cyan&quot;]&gt;
&quot;blue&quot;: ${x?seq_contains(&quot;blue&quot;)?string(&quot;yes&quot;, &quot;no&quot;)}
&quot;yellow&quot;: ${x?seq_contains(&quot;yellow&quot;)?string(&quot;yes&quot;, &quot;no&quot;)}
16: ${x?seq_contains(16)?string(&quot;yes&quot;, &quot;no&quot;)}
&quot;16&quot;: ${x?seq_contains(&quot;16&quot;)?string(&quot;yes&quot;, &quot;no&quot;)}</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">&quot;blue&quot;: yes
&quot;yellow&quot;: no
16: yes
&quot;16&quot;: no</pre></div>

          <p>为了查找值，该内建函数使用了 FreeMarker 的比较规则
		  (就像使用 <a href="dgui_template_exp.html#dgui_template_exp_comparison"><code>==</code>
          操作符</a>)，除了比较两个不同类型的值，或 FreeMarker 不支持的类型来比较，
		  其他都不会引起错误，只是会评估两个值不相等。因此，你可以使用它来查找标量值
		  (也就是字符串，数字，布尔值，或日期/时间类型)。
		  对于其他类型结果通常都是 <code class="inline-code">false</code>。</p>

          <p>对于容错性，该内建函数还对 collection 起作用。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_seq_index_of">seq_index_of</h2>


          

            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p>该内建函数从 FreeMarker 2.3.1 版本开始可用。
			而在 2.3 版本中不存在。</p>
            </div>


            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p><code class="inline-code">seq_</code> 前缀在该内建函数名字中是需要的，
			用来和 <a href="ref_builtins_string.html#ref_builtin_index_of"><code>index_of</code>
            内建函数</a> 区分开。index_of 用来在字符串中查找子串
			(因为变量可以同时当作字符串和序列)。</p>
            </div>


          <p>返回序列中第一次出现该值时的索引位置，
		  如果序列不包含指定的值时返回 <code class="inline-code">-1</code>。
		  要查找的值作为第一个参数。比如这个模板：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign colors = [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]&gt;
${colors?seq_index_of(&quot;blue&quot;)}
${colors?seq_index_of(&quot;red&quot;)}
${colors?seq_index_of(&quot;purple&quot;)}</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">2
0
-1</pre></div>

          <p>为了查找值，该内建函数使用了FreeMarker 的比较规则
		  (就像使用了 <a href="dgui_template_exp.html#dgui_template_exp_comparison"><code>==</code>
          操作符</a>)，除了比较两个不同类型的值，或 FreeMarker 不支持的类型来比较，
		  其他都不会引起错误，只是会评估两个值不相等。因此，你可以使用它来查找标量值
		  (也就是字符串，数字，布尔值，或日期/时间类型)。
		  对于其他类型结果通常是 <code class="inline-code">-1</code>。</p>

          <p>搜索开始的索引值可以由第二个可选参数来确定。
		  如果在同一个序列中相同的项可以多次出现时，这是很有用的。
		  第二个参数的数值没有什么限制：如果它是负数，那么就和它是零的效果一样，
		  而如果它是比序列长度还大的数，那么就和它是序列长度值的效果一样。
		  小数值会被切成整数。比如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign names = [&quot;Joe&quot;, &quot;Fred&quot;, &quot;Joe&quot;, &quot;Susan&quot;]&gt;
No 2nd param: ${names?seq_index_of(&quot;Joe&quot;)}
-2: ${names?seq_index_of(&quot;Joe&quot;, -2)}
-1: ${names?seq_index_of(&quot;Joe&quot;, -1)}
 0: ${names?seq_index_of(&quot;Joe&quot;, 0)}
 1: ${names?seq_index_of(&quot;Joe&quot;, 1)}
 2: ${names?seq_index_of(&quot;Joe&quot;, 2)}
 3: ${names?seq_index_of(&quot;Joe&quot;, 3)}
 4: ${names?seq_index_of(&quot;Joe&quot;, 4)}</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">No 2nd param: 0
-2: 0
-1: 0
 0: 0
 1: 2
 2: 2
 3: -1
 4: -1</pre></div>
        
          



<h2 class="content-header header-section2" id="ref_builtin_seq_last_index_of">seq_last_index_of</h2>


          

            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p>该内建函数从 FreeMarker 2.3.1 版本开始可用。而在2.3版本中不存在。</p>
            </div>


            <div class="callout note">
    <strong class="callout-label">Note:</strong>

            <p><code class="inline-code">seq_</code> 前缀在该内建函数名字中是需要的，
			用来和 <a href="ref_builtins_string.html#ref_builtin_last_index_of"><code>last_index_of</code>
            内建函数</a> 区分开。last_index_of 用来在字符串中查找子串
			(因为变量可以同时当作字符串和序列)。</p>
            </div>


          <p>返回序列中最后一次出现值的索引位置，
		  如果序列不包含指定的值时返回 <code class="inline-code">-1</code>。也就是说，和 <a href="#ref_builtin_seq_index_of"><code>seq_index_of</code></a> 相同，
		  只是在序列中从最后一项开始向前搜索。
		  它也支持可选的第二个参数来确定从哪里开始搜索的索引位置。比如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign names = [&quot;Joe&quot;, &quot;Fred&quot;, &quot;Joe&quot;, &quot;Susan&quot;]&gt;
No 2nd param: ${names?seq_last_index_of(&quot;Joe&quot;)}
-2: ${names?seq_last_index_of(&quot;Joe&quot;, -2)}
-1: ${names?seq_last_index_of(&quot;Joe&quot;, -1)}
 0: ${names?seq_last_index_of(&quot;Joe&quot;, 0)}
 1: ${names?seq_last_index_of(&quot;Joe&quot;, 1)}
 2: ${names?seq_last_index_of(&quot;Joe&quot;, 2)}
 3: ${names?seq_last_index_of(&quot;Joe&quot;, 3)}
 4: ${names?seq_last_index_of(&quot;Joe&quot;, 4)}</pre></div>

          <p>将会输出：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">No 2nd param: 2
-2: -1
-1: -1
 0: 0
 1: 0
 2: 2
 3: 2
 4: 2</pre></div>
        
          



<h2 class="content-header header-section2" id="ref_builtin_size">size</h2>


          

          <p>序列中子变量的数量(作为数字值)。假设序列中至少有一个子变量，
		  那么序列 <code class="inline-code">s</code> 中最大的索引是 <code class="inline-code">s?size - 1</code>
		  (因为第一个子变量的序列是0)。</p>
        
          



<h2 class="content-header header-section2" id="ref_builtin_sort">sort</h2>


          

          

          <p>以升序方式返回序列。(要使用降序排列时，使用它之后使用 <a href="#ref_builtin_reverse"><code>reverse</code> 内建函数</a>。)
		  这仅在子变量都是字符串时有效，或者子变量都是数字，或者子变量都是日期值
		  (日期，时间，或日期+时间)，或者所有子变量都是布尔值时(从2.3.17版本开始)。
		  如果子变量是字符串，它使用本地化(语言)的具体单词排序(通常是大小写不敏感的)。比如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign ls = [&quot;whale&quot;, &quot;Barbara&quot;, &quot;zeppelin&quot;, &quot;aardvark&quot;, &quot;beetroot&quot;]?sort&gt;
&lt;#list ls as i&gt;${i} &lt;/#list&gt;</pre></div>

          <p>将会输出(至少是US区域设置)：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">aardvark Barbara beetroot whale zeppelin</pre></div>
        
          



<h2 class="content-header header-section2" id="ref_builtin_sort_by">sort_by</h2>


          

          

          <p>返回由给定的哈希表子变量来升序排序的哈希表序列。
		  (要降序排列使用该内建函数后还要使用 <a href="#ref_builtin_reverse"><code>reverse</code> 内建函数</a>。)
		  这个规则和 <a href="#ref_builtin_sort"><code>sort</code> 内建函数</a> 是一样的，
		  除了序列中的子变量必须是哈希表类型，而且你不得不给哈希变量的命名，
		  那会用来决定排序顺序。比如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign ls = [
  {&quot;name&quot;:&quot;whale&quot;, &quot;weight&quot;:2000},
  {&quot;name&quot;:&quot;Barbara&quot;, &quot;weight&quot;:53},
  {&quot;name&quot;:&quot;zeppelin&quot;, &quot;weight&quot;:-200},
  {&quot;name&quot;:&quot;aardvark&quot;, &quot;weight&quot;:30},
  {&quot;name&quot;:&quot;beetroot&quot;, &quot;weight&quot;:0.3}
]&gt;
Order by name:
&lt;#list ls?sort_by(&quot;name&quot;) as i&gt;
- ${i.name}: ${i.weight}
&lt;/#list&gt;

Order by weight:
&lt;#list ls?sort_by(&quot;weight&quot;) as i&gt;
- ${i.name}: ${i.weight}
&lt;/#list&gt;</pre></div>

          <p>将会输出(至少是US区域设置)：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">Order by name:
- aardvark: 30
- Barbara: 53
- beetroot: 0.3
- whale: 2000
- zeppelin: -200

Order by weight:
- zeppelin: -200
- beetroot: 0.3
- aardvark: 30
- Barbara: 53
- whale: 2000</pre></div>

          <p>如果你用来排序的子变量的层次很深
		  (也就是说，它是子变量的子变量的子变量，以此类推)，
		  那么你可以使用序列来作为参数，它指定了子变量的名字，
		  来向下引导所需的子变量。比如：</p>

          

<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign members = [
    {&quot;name&quot;: {&quot;first&quot;: &quot;Joe&quot;, &quot;last&quot;: &quot;Smith&quot;}, &quot;age&quot;: 40},
    {&quot;name&quot;: {&quot;first&quot;: &quot;Fred&quot;, &quot;last&quot;: &quot;Crooger&quot;}, &quot;age&quot;: 35},
    {&quot;name&quot;: {&quot;first&quot;: &quot;Amanda&quot;, &quot;last&quot;: &quot;Fox&quot;}, &quot;age&quot;: 25}]&gt;
Sorted by name.last: 
&lt;#list members?sort_by([&#39;name&#39;, &#39;last&#39;]) as m&gt;
- ${m.name.last}, ${m.name.first}: ${m.age} years old
&lt;/#list&gt;</pre></div>

          <p>将会输出(至少是US区域设置)：</p>

          

<div class="code-wrapper"><pre class="code-block code-output">Sorted by name.last: 
- Crooger, Fred: 35 years old
- Fox, Amanda: 25 years old
- Smith, Joe: 40 years old</pre></div>
        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_boolean.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_hash.html"><span>Next</span></a></div></div></div></div>      </div>
    </div>
<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/index.html">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href="https://github.com/nanlei/freemarker/tree/manual-zh-2.3-gae/src/manual">Chinese Manual on Github</a></li><li><a href="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://sourceforge.net/p/freemarker/bugs/new/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"><p><span class="generated-for-product">Generated for: Freemarker 2.3.23</span><span class="last-updated"> Last generated:
<time itemprop="dateModified" datetime="2015-09-18T14:38:51Z" title="Friday, September 18, 2015 2:38:51 PM GMT">2015-09-18 14:38:51 GMT</time></span></p> <p class="copyright">
© <span itemprop="copyrightYear">1999</span>–2015
<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://freemarker.org">The FreeMarker Project</a>. All rights reserved. </p>
</div></div></div></body>
</html>
